#include "consola.h"

void setearValores (void){

	int i;

	for (i=0; i<30; ++i){
		mensajeRecibido[i]="0";
	}

	var1=0;
	var2=0;
	var3=0;
	var4=0;
	var5=0;
	var6=0;
}

void llenarVar (void){
	var[0]=var1;
	var[1]=var2;
	var[2]=var3;
	var[3]=var4;
	var[4]=var5;
}

void traducirMensaje (mensajeRecibido)//char* mensajeRecibido, config Config
{
	//int ULTIMO_SECTOR = Config.CHS.cilindros * Config.CHS.sectores;
	sscanf( mensajeRecibido, "%s %i %i %i %i %i %i", comando, &var1, &var2, &var3, &var4, &var5, &var6 );
		    	llenarVar();

		    	if (strcmp(comando,"info") && strcmp(comando,"clean") && strcmp(comando,"trace") && strcmp (comando, "exit"))//significa q son distintos, porq sino strcmp devuelve 0
		    		  {
		    		  	strcpy (mensaje , "Comando no valido.");

		    		   	}
		    	else {
		    			printf("Recibi el comando %s\n", comando);//tendria q ser un log
		    	}

		    	if (strcmp(comando, "exit") == 0)
		    	{
		    		printf("Se termino la comunicacion con la consola");//tendria q ser un log
		    	}
		    	else if (strcmp(comando, "exit") != 0)
		    	{
		    		printf("procesando y enviando respuesta\n\n");//esto deberia desaparecer o ser un log
		    	}

		    	  if (strcmp(comando, "info") == 0)
		    	  {	   if (var1!=0){
		        	   strcpy (mensaje , "El comando info no recibe parametros. Ingreselo correctamente");
		    	  	  }
		    	  	  else {
				   	    strcpy (mensaje , "la posicion del cabezal es 5.1.16");
		    	  	  }
		    	  }
		    	  else if (strcmp(comando, "clean") == 0)
		    	  {
		    		  if (var1==0){
		    			  strcpy (mensaje , "El comando clean necesita 2 sectores\nIngresa el comando correctamente");
		    		  }
		    		  else if (var2==0){
		    			  strcpy (mensaje , "Te falto el sector final\nIngrese el comando correctamente");
		    		  }
		    		  else if (var3!=0){

		    			  strcpy (mensaje , "Este comando solo debe recibir el sector inicial y final a limpiar. Ingreselo correctamente");
					  }
		    		  else{
						sprintf(mensaje, "Los sectores del %i al %i se limpiaron correctamente\n", var1, var2);
		    		  }
		    	   }
		    	else if (strcmp(comando,"trace")==0)
		    	{
		    		if (var1==0)
		    		{
		    			strcpy (mensaje , "No ingresaste ningun sector. Ingreselo correctamente\nEjemplo: trace 10 11");
		    		}
		    		else if (var6!=0)
		    		{
		    			strcpy (mensaje , "El maximo de sectores es 5.\nPor favor ingrese correctamente el comando");
		    		}
		    		else {
		    			//e=0;
		    			//printf ("Se estan leyendo los sectores:\n");
		    			sectoresNoValidos = 0;
		    			for (i=0; i<5; ++i){
		    				if (var[i]>=ULTIMO_SECTOR){
		    					sprintf(mensaje,"(el sector %i no es valido, sobrepasa el limite).\nEl valor maximo de sector es %i.\nPor favor ingrese nuevamente el comando", var[i], ULTIMO_SECTOR);
		    					++sectoresNoValidos;
		    				}
		    		    }
		    			if (sectoresNoValidos == 0)
		    			{
		    				strcpy (mensaje , "Comando trace bien ingresado.\nBuscando esos sectores\n");
		    			}

		    		}

		    		  	}
		    	else if (strcmp(comando, "exit") == 0)
		    	{
		    		strcpy (mensaje , "Ingresaste el comando exit, se cerrara la comunicacion");
		    	}

		    	setearValores ();
}
